<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <meta name="author" content="隐星魂 (Roy.Sun)">
        
        <link rel="shortcut icon" href="../../../img/favicon.ico">
        <title>正点原子F407核心板上手指南 - 玄武操作系统</title>
        <link href="../../../css/bootstrap.min.css" rel="stylesheet">
        <link href="../../../css/font-awesome.min.css" rel="stylesheet">
        <link href="../../../css/base.css" rel="stylesheet">
        <link rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/10.0.3/styles/color-brewer.min.css">

        <script src="../../../js/jquery-1.10.2.min.js" defer></script>
        <script src="../../../js/bootstrap.min.js" defer></script>
        <script src="https://cdn.staticfile.org/highlight.js/10.0.3/highlight.min.js"></script>
        <script>hljs.initHighlightingOnLoad();</script> 
    </head>

    <body>
        <div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
            <div class="container">
                <a class="navbar-brand" href="../../..">玄武操作系统</a>
                <!-- Expander button -->
                <button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbar-collapse">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <!-- Expanded navigation -->
                <div id="navbar-collapse" class="navbar-collapse collapse">
                        <!-- Main navigation -->
                        <ul class="nav navbar-nav">
                            <li class="navitem">
                                <a href="../../.." class="nav-link">介绍</a>
                            </li>
                            <li class="navitem">
                                <a href="../../../license/" class="nav-link">开源协议</a>
                            </li>
                            <li class="dropdown">
                                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">应用手册 <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/01.%E7%AE%80%E4%BB%8B/" class="dropdown-item">简介</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/02.%E7%B3%BB%E7%BB%9F%E5%9F%BA%E6%9C%AC%E6%9E%B6%E6%9E%84/" class="dropdown-item">系统基本架构</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/03.%E6%9E%84%E5%BB%BA%E7%B3%BB%E7%BB%9F/" class="dropdown-item">构建系统</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/04.%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B/" class="dropdown-item">启动流程</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/05.%E5%9F%BA%E6%9C%AC%E7%BA%A6%E5%AE%9A/" class="dropdown-item">基本约定</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/06.%E4%B8%AD%E6%96%AD%E6%8E%A7%E5%88%B6/" class="dropdown-item">中断控制</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/07.%E8%B0%83%E5%BA%A6%E5%99%A8/" class="dropdown-item">调度器</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/08.%E7%BA%BF%E7%A8%8B/" class="dropdown-item">线程</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/09.%E7%94%B5%E6%BA%90%E7%AE%A1%E7%90%86/" class="dropdown-item">电源管理</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/10.%E8%BD%AF%E4%BB%B6%E5%AE%9A%E6%97%B6%E5%99%A8/" class="dropdown-item">软件定时器</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/11.%E9%94%81/" class="dropdown-item">锁</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/12.%E5%90%8C%E6%AD%A5/" class="dropdown-item">同步</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/13.%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/" class="dropdown-item">内存管理</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/14.%E7%8E%84%E6%AD%A6C%E5%BA%93/" class="dropdown-item">玄武C库</a>
</li>
                                </ul>
                            </li>
                            <li class="dropdown active">
                                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">快速开发指南 <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    
  <li class="dropdown-submenu">
    <a href="#" class="dropdown-item">S32k</a>
    <ul class="dropdown-menu">
            
<li>
    <a href="../../s32k/1.XuanWuOS-envsetup-guide/" class="dropdown-item">开发环境搭建指南</a>
</li>
            
<li>
    <a href="../../s32k/2.XuanWuOS-project-setup-guide/" class="dropdown-item">工程配置指南</a>
</li>
    </ul>
  </li>
                                    
  <li class="dropdown-submenu">
    <a href="#" class="dropdown-item">Stm32</a>
    <ul class="dropdown-menu">
            
<li>
    <a href="../1.XuanWuOS-envsetup-guide/" class="dropdown-item">开发环境搭建指南</a>
</li>
            
<li>
    <a href="../2.XuanWuOS-project-setup-guide/" class="dropdown-item">工程配置指南</a>
</li>
            
<li>
    <a href="../3.XuanWuOS-xwbd-atkh743/" class="dropdown-item">正点原子阿波罗H743开发板上手指南</a>
</li>
            
<li>
    <a href="../4.XuanWuOS-xwbd-fk429m/" class="dropdown-item">反客F429核心板上手指南</a>
</li>
            
<li>
    <a href="./" class="dropdown-item active">正点原子F407核心板上手指南</a>
</li>
            
<li>
    <a href="../6.XuanWuOS-xwbd-atkf103core/" class="dropdown-item">正点原子F103核心板上手指南</a>
</li>
    </ul>
  </li>
                                    
  <li class="dropdown-submenu">
    <a href="#" class="dropdown-item">Xwko</a>
    <ul class="dropdown-menu">
            
<li>
    <a href="../../xwko/1.XuanWuKO-guide/" class="dropdown-item">玄武内核模块快速上手指南</a>
</li>
    </ul>
  </li>
                                </ul>
                            </li>
                            <li class="dropdown">
                                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">规范 <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    
<li>
    <a href="../../../%E8%A7%84%E8%8C%83/git-commit-specification/" class="dropdown-item">git commit规范</a>
</li>
                                    
<li>
    <a href="../../../%E8%A7%84%E8%8C%83/version-branch-specification/" class="dropdown-item">分支与版本号</a>
</li>
                                </ul>
                            </li>
                        </ul>

                    <ul class="nav navbar-nav ml-auto">
                        <li class="nav-item">
                            <a href="#" class="nav-link" data-toggle="modal" data-target="#mkdocs_search_modal">
                                <i class="fa fa-search"></i> 搜索
                            </a>
                        </li>
                            <li class="nav-item">
                                <a rel="prev" href="../4.XuanWuOS-xwbd-fk429m/" class="nav-link">
                                    <i class="fa fa-arrow-left"></i> 上一篇
                                </a>
                            </li>
                            <li class="nav-item">
                                <a rel="next" href="../6.XuanWuOS-xwbd-atkf103core/" class="nav-link">
                                    下一篇 <i class="fa fa-arrow-right"></i>
                                </a>
                            </li>
                    </ul>
                </div>
            </div>
        </div>

        <div class="container">
            <div class="row">
                    <div class="col-md-3"><div class="navbar-light navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
    <div class="navbar-header">
        <button type="button" class="navbar-toggler collapsed" data-toggle="collapse" data-target="#toc-collapse" title="Table of Contents">
            <span class="fa fa-angle-down"></span>
        </button>
    </div>

    
    <div id="toc-collapse" class="navbar-collapse collapse card bg-secondary">
        <ul class="nav flex-column">
            
            <li class="nav-item" data-level="1"><a href="#f407" class="nav-link">正点原子F407核心板上手指南</a>
              <ul class="nav flex-column">
            <li class="nav-item" data-level="2"><a href="#_1" class="nav-link">简介</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_2" class="nav-link">开发环境</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_7" class="nav-link">编译</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_8" class="nav-link">调试</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_11" class="nav-link">示例</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_12" class="nav-link">系统集成的原理</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_13" class="nav-link">功能</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_14" class="nav-link">附录</a>
              <ul class="nav flex-column">
              </ul>
            </li>
              </ul>
            </li>
        </ul>
    </div>
</div></div>
                    <div class="col-md-9" role="main">

<h1 id="f407">正点原子F407核心板上手指南</h1>
<hr />
<hr />
<h2 id="_1">简介</h2>
<p><img alt="img" src="../res/figure/ATKF407Core.png" title="正点原子F407核心板" /></p>
<ul>
<li>MCU: STM32F407ZET6</li>
<li>SRAM: 1MiB</li>
<li>更多介绍: <a href="https://detail.tmall.com/item.htm?id=609293805821&amp;spm=a1z09.2.0.0.c0b02e8djM9HAe&amp;_u=o3vm7h3267f7">淘宝店铺介绍</a></li>
<li>电路板目录： XuanWuOS/xwbd/atkf407core</li>
</ul>
<hr />
<h2 id="_2">开发环境</h2>
<h4 id="_3">搭建环境</h4>
<ul>
<li><a href="../1.XuanWuOS-envsetup-guide/">《Ubuntu &amp; Windows 开发环境搭建指南》</a></li>
</ul>
<h4 id="_4">下载工程</h4>
<ul>
<li>仓库：<a href="https://gitee.com/xwos/atkf407core.git">https://gitee.com/xwos/atkf407core.git</a></li>
<li>命令：</li>
</ul>
<pre><code class="sh">git clone --recursive https://gitee.com/xwos/atkf407core.git
cd atkf407core
unzip project-template.zip
</code></pre>

<ul>
<li>工程需放在STM32CubeIDE的工作目录内（即STM32CubeIDE启动时指定的目录），
    并按照上面的命令将<strong>“project-template.zip”</strong>解压到工程目录中，
    这些文件为工程模板。</li>
</ul>
<p><img alt="img" src="../res/figure/atkf407core-Project-Folder.png" title="工程目录" /></p>
<ul>
<li>已有工程，同步命令：</li>
</ul>
<pre><code class="sh">cd atkf407core
git pull
git submodule update
</code></pre>

<h4 id="_5">导入工程</h4>
<p>打开菜单<strong>File --&gt; Import... --&gt; General --&gt; Projects from Folder or Archive</strong></p>
<p><img alt="img" src="../res/figure/STM32CubeIDE-Import.png" title="导入工程" /></p>
<h4 id="_6">重新设置编译环境</h4>
<ul>
<li>打开菜单<strong>"Project --&gt; Properties --&gt; C/C++ Build --&gt; Environment"</strong>；</li>
<li>点击<strong>"Restore Defaults"</strong>；</li>
<li>参考<a href="../2.XuanWuOS-project-setup-guide/">《工程配置指南》</a>
    中的 <strong>“使用STM32CubeIDE进行开发 -- 编译环境设置”</strong> 以及
    <strong>"使用STM32CubeIDE进行开发 -- 设置工具链为GNU MCU Eclipse提供的工具链"</strong>
    重新设置环境变量。</li>
</ul>
<h6 id="debug">Debug编译环境设置</h6>
<p><img alt="img" src="../res/figure/STM32CubeIDE-Project-Properties-C-Build-Env-Debug.png" title="Debug配置" /></p>
<h6 id="release">Release编译环境设置</h6>
<p><img alt="img" src="../res/figure/STM32CubeIDE-Project-Properties-C-Build-Env-Release.png" title="Release配置" /></p>
<h6 id="linuxpath">Linux下的环境变量<strong>PATH</strong>设置</h6>
<p><img alt="img" src="../res/figure/STM32CubeIDE-Properties-C-Build-Env-Path-Linux.png" title="Linux-Env-PATH" /></p>
<h6 id="windowspath">Windows下的环境变量<strong>PATH</strong>设置</h6>
<p><img alt="img" src="../res/figure/STM32CubeIDE-Properties-C-Build-Env-Path-Windows.png" title="Windows-Env-PATH" /></p>
<hr />
<h2 id="_7">编译</h2>
<p><img alt="img" src="../res/figure/STM32CubeIDE-Build.png" title="编译" /></p>
<hr />
<h2 id="_8">调试</h2>
<p>打开菜单<strong>Run --&gt; Debug Configurations...</strong>，根据仿真器类型，选择调试配置：</p>
<ul>
<li><strong>atkf407core-openocd-daplink</strong>：<strong>gdb</strong> + <strong>openocd</strong> + <strong>DAPLink调试器</strong></li>
<li><strong>atkf407core-openocd-jlink</strong>：<strong>gdb</strong> + <strong>openocd</strong> + <strong>JLink调试器</strong></li>
<li><strong>atkf407core-stlink</strong>：<strong>gdb</strong> + <strong>STLink GDB Server</strong> + <strong>JLink调试器</strong></li>
</ul>
<p><img alt="img" src="../res/figure/STM32CubeIDE-Debug-Configurations.png" title="调试配置" /></p>
<h4 id="_9">步骤</h4>
<ul>
<li>使用MicroUSB线连接电路板上的USB-232接口与PC；</li>
</ul>
<p><img alt="img" src="../res/figure/ATKF407Core-PCB.png" title="正点原子F407核心板PCB" /></p>
<ul>
<li>打开终端工具（windows可选putty、SecretCRT，Linux可选gtkterm、picocom、minicom）,
    但先不要在终端工具中打开串口，否则MCU会进入下载模式；</li>
<li>上电，STM32CubeIDE中启动调试，等待MCU运行到初始断点；</li>
<li>在终端工具中打开串口，参数：1M波特率/8位数据/1位停止位/无奇偶校验；</li>
<li>开始单步调试或连续运行调试。</li>
</ul>
<h4 id="_10">技巧</h4>
<h6 id="1">1.复位系统</h6>
<p>因为板子的调试接口是4线SWD，与调试器之间没有复位线连接，经常无法完成自动复位，
时常发生在下载完程序，等待MCU运行到初始断点处时。可按以下步骤处理：</p>
<ul>
<li>在程序的初始化流程中设置一个断点，例如<strong>xwos_main()</strong>函数内部；</li>
<li>若MCU处于停止运行状态，需要让MCU处于运行状态：</li>
</ul>
<p><img alt="img" src="../res/figure/STM32CubeIDE-DebugResume.png" title="Debug-Resume" /></p>
<ul>
<li>手动按一下板子上的复位按键，此时MCU可停在预设的断点处。</li>
</ul>
<h6 id="2">2.关闭写缓存</h6>
<p>ARMv7-m4内核的MCU带有写缓存，常常会对定位程序BUG带来困扰，可以在调试时关闭。</p>
<pre><code class="C">/* xwbd/atkf407core/bm/stm32cube/mif.c */

__xwbsp_init_code
void stm32cube_lowlevel_init(void)
{
        ...
        cm_scs.scnscb.actlr.bit.disdefwbuf = 1; /* disdefwbuf位置1关闭写缓存 */
        ...
}
</code></pre>

<hr />
<h2 id="_11">示例</h2>
<p>玄武OS中有多个示例可帮助用户快速了解API的用法：</p>
<ul>
<li>线程<ul>
<li>创建线程：<strong>xwam/example/thread/create</strong></li>
<li>线程睡眠：<strong>xwam/example/thread/sleep</strong></li>
</ul>
</li>
<li>定时器：<strong>xwam/example/timer</strong></li>
<li>同步<ul>
<li>信号量：<strong>xwam/example/sync/semaphore</strong></li>
<li>条件量：<strong>xwam/example/sync/condition</strong></li>
<li>事件信号旗：<strong>xwam/example/sync/flag</strong></li>
<li>线程栅栏：<strong>xwam/example/sync/barrier</strong></li>
<li>信号选择器：<strong>xwam/example/sync/selector</strong></li>
</ul>
</li>
<li>临界区管理<ul>
<li>中断管理：<strong>xwam/example/lock/cpuirq</strong></li>
<li>自旋锁：<strong>xwam/example/lock/spinlock</strong></li>
<li>顺序锁：<strong>xwam/example/lock/seqlock</strong></li>
<li>互斥锁：<strong>xwam/example/lock/mutex</strong></li>
</ul>
</li>
<li>内存管理<ul>
<li>简单内存分配器：<strong>xwam/example/mm/sma</strong></li>
<li>内存切片分配器：<strong>xwam/example/mm/memslice</strong></li>
<li>伙伴算法分配器：<strong>xwam/example/mm/bma</strong></li>
<li>内存池：只用于比较大的内存区域的管理，例如外接的SRAM。
    atkf407core工程已经为板载的SRAM建立了内存池。</li>
</ul>
</li>
</ul>
<p>每个示例中都有一个<strong>xxx_start()</strong>函数，可在<strong>xwbd/atkf407core/bm/main/main.c</strong>文件中的
主线程<strong>main_thrd()</strong>中调用这些函数启动示例，但最好一次只启动一个示例，避免冲突。</p>
<pre><code class="C">/* xwbd/atkf407core/bm/main/main.c */

xwer_t main_thrd(void * arg)
{
        ...
        example_flag_start();
        ...

        return XWOK;
}
</code></pre>

<hr />
<h2 id="_12">系统集成的原理</h2>
<ul>
<li>玄武OS是高度模块化设计，非常强调代码的复用性，因此玄武OS提供了一个编译系统来
    集成各种各样的软件。</li>
<li>所有移植的第三方组件、驱动包、示例代码等都是以<strong>玄武模块</strong>的形式独立编译成
    静态库<strong>.a</strong>，之后再将它们链接成ELF文件，再由ELF生成bin或Hex文件。</li>
<li><strong>玄武模块</strong>的设计思想借鉴了安卓系统的<strong>Android.mk</strong>，因此每个<strong>玄武模块</strong>
    中都有一个<strong>xwmo.mk</strong>文件。</li>
<li>每个<strong>玄武模块</strong>都是独立编译的，每个<strong>xwmo.mk</strong>中定义的<strong>编译参数</strong>、
    <strong>头文件搜索路径</strong>只对<strong>当前玄武模块</strong>有效。因此，当其他<strong>玄武模块</strong>想要引入
    当前<strong>玄武模块</strong>的某个头文件时，极有可能因为编译配置不同，导致头文件内
    的子头文件搜索不到而编译失败。</li>
<li>每个<strong>玄武模块</strong>即为一个封闭的包，因此，开发者需要对外提供<strong>接口头文件</strong>，
    以便其他<strong>玄武模块</strong>调用。这些<strong>接口头文件</strong>只能包含外部可见的<strong>子头文件</strong>、
    <strong>类型定义</strong>以及<strong>API接口</strong>。例如，工程中，<strong>电路板模块</strong>(<strong>xwbd/atkf407core/bm</strong>)
    内有很多<strong>玄武模块</strong>内都包含了一个名为<strong>mif.h</strong>的头文件，
    名字的意思是<strong>模块接口(Module InterFace)</strong>。</li>
<li><strong>电路板模块</strong>(<strong>xwbd/atkf407core/bm</strong>)内有一个主模块<strong>main</strong>，提供<strong>xwos_main()</strong>
    函数，此模块功能类似于传统C语言的<strong>main()</strong>函数，作用是将所有<strong>玄武模块</strong>集成
    在一起。</li>
<li>玄武OS内包含了大量<strong>玄武模块</strong>，例如<strong>xwam</strong>内包含了示例与一些应用，<strong>xwmd</strong>内
    包含了中间件，<strong>xwem</strong>包含了移植的第三方开源软件。这些<strong>玄武模块</strong>对所有<strong>xwbd</strong>内
    的开发板理论上都是复用的。</li>
<li>有关<strong>玄武模块</strong>可以参考<a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/03.%E6%9E%84%E5%BB%BA%E7%B3%BB%E7%BB%9F/">应用手册——构建系统</a></li>
</ul>
<hr />
<h2 id="_13">功能</h2>
<ul>
<li>BSP<ul>
<li>STM32Cube模块：<strong>xwbd/atkf407core/bm/stm32cube</strong></li>
<li>STM32CubeMX配置文件：<strong>xwbd/atkf407core/bm/stm32cube/cubemx/atkf407core.ioc</strong></li>
<li>STM32CubeMX生成源码目录：<strong>xwbd/atkf407core/bm/stm32cube/cubemx</strong></li>
<li>STM32Cube适配玄武OS的源码：<strong>xwbd/atkf407core/bm/stm32cube/xwac</strong></li>
<li>终端UART<ul>
<li>设备：USART1</li>
<li>参数：1M波特率/8位数据/1位停止位/无奇偶校验</li>
<li>驱动<ul>
<li>驱动框架 —— 设备栈：<strong>xwmd/ds/uart/dma.c</strong></li>
<li>设备栈驱动：<strong>xwbd/atkf407core/bm/stm32cube/xwac/xwds/uart.c</strong></li>
<li>HAL库驱动：<strong>xwbd/atkf407core/bm/stm32cube/cubemx/Core/Src/usart.c</strong></li>
</ul>
</li>
</ul>
</li>
<li>SRAM<ul>
<li>映射地址：<strong>0x68000000</strong></li>
<li>大小：<strong>1MiB</strong></li>
<li>驱动：<strong>xwbd/atkf407core/bm/stm32cube/cubemx/Core/Src/fsmc.c</strong></li>
<li>内存池<ul>
<li>头文件<ul>
<li><strong>xwbd/atkf407core/bm/stm32cube/mif.h</strong></li>
<li><strong>xwos/mm/mempool/allocator.h</strong></li>
</ul>
</li>
<li>内存池对象：<strong>sram_mempool</strong></li>
<li>申请：<strong>xwmm_mempool_malloc(sram_mempool, ...)</strong></li>
<li>释放：<strong>xwmm_mempool_free(sram_mempool, ...)</strong></li>
<li>重新申请：<strong>xwmm_mempool_realloc(sram_mempool, ...)</strong></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<hr />
<h2 id="_14">附录</h2>
<ul>
<li>参考文档<ul>
<li><a href="../1.XuanWuOS-envsetup-guide/">《开发环境搭建指南》</a></li>
<li><a href="../2.XuanWuOS-project-setup-guide/">《工程配置指南》</a></li>
<li><a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/01.%E7%AE%80%E4%BB%8B/">《应用手册》</a></li>
</ul>
</li>
</ul></div>
            </div>
        </div>

        <footer class="col-md-12">
            <hr>
            <p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
        </footer>
        <script>
            var base_url = "../../..",
                shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
        </script>
        <script src="../../../js/base.js" defer></script>
        <script src="../../../search/main.js" defer></script>

        <div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title" id="searchModalLabel">搜索</h4>
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
            </div>
            <div class="modal-body">
                <p>
                    在这里所有文档：
                </p>
                <form>
                    <div class="form-group">
                        <input type="search" class="form-control" placeholder="搜索..." id="mkdocs-search-query" title="Type search term here">
                    </div>
                </form>
                <div id="mkdocs-search-results"></div>
            </div>
            <div class="modal-footer">
            </div>
        </div>
    </div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
            </div>
            <div class="modal-body">
              <table class="table">
                <thead>
                  <tr>
                    <th style="width: 20%;">Keys</th>
                    <th>Action</th>
                  </tr>
                </thead>
                <tbody>
                  <tr>
                    <td class="help shortcut"><kbd>?</kbd></td>
                    <td>Open this help</td>
                  </tr>
                  <tr>
                    <td class="next shortcut"><kbd>n</kbd></td>
                    <td>Next page</td>
                  </tr>
                  <tr>
                    <td class="prev shortcut"><kbd>p</kbd></td>
                    <td>Previous page</td>
                  </tr>
                  <tr>
                    <td class="search shortcut"><kbd>s</kbd></td>
                    <td>Search</td>
                  </tr>
                </tbody>
              </table>
            </div>
            <div class="modal-footer">
            </div>
        </div>
    </div>
</div>

    </body>
</html>
